<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
          ① 如果try报错，自报错位置开始，try的后续代码停止执行，同是执行catch代码
          ② 如果是语法错误，无法通过 catch 捕捉

          throw
          ① 中断程序执行
          ② 手动抛出一个异常
          ③ throw 可以抛出任意值类型，约定抛出一个Error对象

          逻辑错误
          ① 定义错误对象
          ② 根据业务逻辑抛出错误对象
          ③ catch 捕捉错误（保证错误影响范围最小，不影响外部代码的执行）

          finally 作用
          如果代码执行过程中，没有问题要执行a代码，有问题也要执行a代码，那么a代码就应该放到 finally 中写
       */

      try {
        JSON.parse('{"a":1,}');
        // 操作文件有错误
      } catch (error) {
        // try 抛错执行
        console.log("catch");
        // 抛出错误
      } finally {
        // try 抛错执行，不抛错也执行
        console.log("finally");
        // 关闭文件
      }
    </script>
  </body>
</html>
